package br.com.bankai.koby.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.bankai.koby.repository.entity.Estado;
import br.com.bankai.koby.repository.impl.EstadoRepository;
import br.com.graflogic.utilities.datautil.copy.ObjectCopier;

/**
 * 
 * @author Leonardo
 *
 */
@Service
public class EstadoService extends CachedService {

	private static final String CACHE_NAME = "estados";
	private static final String ALL_KEY = "all";

	@Autowired
	private EstadoRepository repository;

	@SuppressWarnings("unchecked")
	public List<Estado> searchAll() {
		Object cacheObj = findOnCache(CACHE_NAME, ALL_KEY);
		if (null == cacheObj) {
			List<Estado> estados = repository.searchAll();
			putOnCache(CACHE_NAME, ALL_KEY, ObjectCopier.copy(estados));
			return estados;
		} else {
			List<Estado> estados = new ArrayList<Estado>();
			estados.addAll((List<Estado>) cacheObj);
			return estados;
		}
	}
}
